package one;
//单例模式

public class Singleton {
    // 使用 volatile 关键字确保多线程环境下变量的可见性
    private static volatile Singleton singletonInstance;

    // 私有构造函数防止外部实例化
    private Singleton() {}

    // 提供一个公共静态方法获取实例
    public static Singleton getInstance() {
        if (singletonInstance == null) { // 第一次检查
            synchronized (Singleton.class) {
                if (singletonInstance == null) { // 第二次检查
                    singletonInstance = new Singleton();
                }
            }
        }
        return singletonInstance;
    }

    // 示例方法
    public void showMessage() {
        System.out.println("Hello from Singleton!");
    }

    // 主类用于测试单例模式
    public static void main(String[] args) {
        // 获取唯一可用的对象
        Singleton object1 = Singleton.getInstance();
        object1.showMessage(); // 输出 "Hello from Singleton!"

        // 再次尝试获取对象
        Singleton object2 = Singleton.getInstance();

        // 检查两个对象是否相同
        System.out.println(object1 == object2); // 输出 true
    }
}